#!/bin/bash

#============================================
# 函数的定义与调用
#============================================

#加 function关键字可写可不写
function add() {
    result=0
    for para in "$@"; do
        result=$(expr $result + $para)
    done
    echo "第一个参数为:$1" # 获取第1个参数如$1
    echo "最后一个参数为:${n}" # 获取第n个参数用$n
    echo "参数个数: $#" # 获取参数个数用$#
    return $result
}

#减
sub() {
    result=1000 #函数中的变量都是全局变量，没有局部变量
    for para in "$@"; do
        result=$(expr $result - $para)
    done
    echo "参数个数: $#"
    return $result
}

#乘
mul() {
    result=1
    for para in "$@"; do
        result=$(expr $result \* $para)
    done
    echo "参数个数: $#"
    return $result
}

#除
dev() {
    result=1000
    for para in "$@"; do
        result=$(expr $result / $para)
    done
    echo "参数个数: $#"
    return $result
}

#调用格式：函数名 参数1 参数2...
# 函数名后不带()
add 1 2 3 4 5 6 7 8 9 10 11
echo "求和: $?"
echo $result #函数中的变量都是全局变量，没有局部变量，所以仍然能获取到值

sub 100 200
echo "求差: $?"

mul 100 10 2
echo "求积: $?"

dev 2 2
echo "求商: $?"

# 几个特殊字符用来处理参数：
# $#	传递到脚本或函数的参数个数
# $*	以一个单字符串显示所有向脚本传递的参数
# $$	脚本运行的当前进程ID号
# $!	后台运行的最后一个进程的ID号
# $@	与$*相同，但是使用时加引号，并在引号中返回每个参数
# $-	显示Shell使用的当前选项，与set命令功能相同
# $?	显示最后命令的退出状态。0表示没有错误，其他任何值表明有错误